package off_trial

import (
	// "bp/cache"
	sqlc "bp/db/sqlc"
	// "bp/internal/util"
	"context"
)

// // DisableOffTrialItemsByOutTransNoAndTrialSceneParam 根据外部交易号+试算场景作废优惠试算项目参数
// type DisableOffTrialItemsByOutTransNoAndTrialSceneParam struct {
// 	OutTransNo string
// 	TrialScene string
// }

// // DisableOffTrialsByOutTransNoAndTrialScene 根据外部交易号+试算场景作废优惠试算
// func (s *OffTrialEntityServiceImp) DisableOffTrialItemsByOutTransNoAndTrialScene(ctx context.Context, q *sqlc.Queries, ptr *DisableOffTrialItemsByOutTransNoAndTrialSceneParam) (err error) {
// 	// slog := util.NewContextLogger(ctx, s.slog)
// 	err = q.DisableOffTrialItemsByOutTransNoAndTrialScene(ctx, sqlc.DisableOffTrialsByOutTransNoAndTrialSceneParams{
// 		OutTransNo: ptr.OutTransNo,
// 		TrialScene: ptr.TrialScene,
// 	})
// 	if err != nil {
// 		return
// 	}
// 	return
// }

// RefreshOffTrialItemsByOutTransNoAndTrialSceneParam 根据外部交易号+试算场景批量刷新优惠试算项目参数
type RefreshOffTrialItemsByOutTransNoAndTrialSceneParam struct {
	OutTransNo                   string
	TrialScene                   string
	UpsertOffTrialITemParamsPtrs []*sqlc.UpsertOffTrialItemParams
}

// RefreshOffTrialItemsByOutTransNoAndTrialScene 试算场景批量刷新优惠试算项目
func (s *OffTrialEntityServiceImp) RefreshOffTrialItemsByOutTransNoAndTrialScene(ctx context.Context, q *sqlc.Queries, ptr *RefreshOffTrialItemsByOutTransNoAndTrialSceneParam) (offTrialItemPtrs []*sqlc.OffTrialItem, err error) {
	// slog := util.NewContextLogger(ctx, s.slog)
	err = q.DisableOffTrialItemsByOutTransNoAndTrialScene(ctx, sqlc.DisableOffTrialItemsByOutTransNoAndTrialSceneParams{
		OutTransNo: ptr.OutTransNo,
		TrialScene: ptr.TrialScene,
	})
	if err != nil {
		return
	}
	for _, UpsertOffTrialItemParamsPtr := range ptr.UpsertOffTrialITemParamsPtrs {
		offTrialItem, upErr := q.UpsertOffTrialItem(ctx, *UpsertOffTrialItemParamsPtr)
		if upErr != nil {
			err = upErr
			return
		}
		offTrialItemPtrs = append(offTrialItemPtrs, &offTrialItem)
	}
	return
}
